import UIKit

@available(iOS 4.2, *)
extension QKC where AA :UIPrintInteractionController {
		// changes to printInfo ignored while printing. default is nil
    open func printInfo_qk_s(_ printInfo:  UIPrintInfo? ) -> QKC<AA,YY,ZZ, UIPrintInfo? >{
		return link(next: printInfo).then_QK { $0.value.printInfo = printInfo }
	}
    open func printInfo_qk_g() -> QKC<AA,YY,ZZ, UIPrintInfo? >{
		 self +^ self.value.printInfo
	}

		// not retained. default is nil
     open func delegate_qk_s(_ delegate:  UIPrintInteractionControllerDelegate? ) -> QKC<AA,YY,ZZ, UIPrintInteractionControllerDelegate? >{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UIPrintInteractionControllerDelegate? >{
		 self +^ self.value.delegate
	}

    @available(iOS, introduced: 4.2, deprecated: 10.0, message: "Pages can be removed from the print preview, so page range is always shown.")
    open func showsPageRange_qk_s(_ showsPageRange:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: showsPageRange).then_QK { $0.value.showsPageRange = showsPageRange }
	}
    @available(iOS, introduced: 4.2, deprecated: 10.0, message: "Pages can be removed from the print preview, so page range is always shown.")
    open func showsPageRange_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.showsPageRange
	}

		// default is YES.
    @available(iOS 7.0, *)
    open func showsNumberOfCopies_qk_s(_ showsNumberOfCopies:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: showsNumberOfCopies).then_QK { $0.value.showsNumberOfCopies = showsNumberOfCopies }
	}
    @available(iOS 7.0, *)
    open func showsNumberOfCopies_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showsNumberOfCopies
	}

		// default is NO.  Paper selection for loaded papers is always shown for UIPrintInfoOutputPhoto and UIPrintInfoOutputPhotoGrayscale
    @available(iOS 8.0, *)
    open func showsPaperSelectionForLoadedPapers_qk_s(_ showsPaperSelectionForLoadedPapers:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: showsPaperSelectionForLoadedPapers).then_QK { $0.value.showsPaperSelectionForLoadedPapers = showsPaperSelectionForLoadedPapers }
	}
    @available(iOS 8.0, *)
    open func showsPaperSelectionForLoadedPapers_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showsPaperSelectionForLoadedPapers
	}

		// set after printer selection
    open func printPaper_qk_g() -> QKC<AA,YY,ZZ, UIPrintPaper? >{
		 self +^ self.value.printPaper
	}

		// calls class to render each page
    open func printPageRenderer_qk_s(_ printPageRenderer:  UIPrintPageRenderer? ) -> QKC<AA,YY,ZZ, UIPrintPageRenderer? >{
		return link(next: printPageRenderer).then_QK { $0.value.printPageRenderer = printPageRenderer }
	}
    open func printPageRenderer_qk_g() -> QKC<AA,YY,ZZ, UIPrintPageRenderer? >{
		 self +^ self.value.printPageRenderer
	}

		// uses a single formatter to fill the pages
    open func printFormatter_qk_s(_ printFormatter:  UIPrintFormatter? ) -> QKC<AA,YY,ZZ, UIPrintFormatter? >{
		return link(next: printFormatter).then_QK { $0.value.printFormatter = printFormatter }
	}
    open func printFormatter_qk_g() -> QKC<AA,YY,ZZ, UIPrintFormatter? >{
		 self +^ self.value.printFormatter
	}

		// single NSData, NSURL, UIImage, ALAsset
    open func printingItem_qk_s(_ printingItem:  Any? ) -> QKC<AA,YY,ZZ, Any? >{
		return link(next: printingItem).then_QK { $0.value.printingItem = printingItem }
	}
    open func printingItem_qk_g() -> QKC<AA,YY,ZZ, Any? >{
		 self +^ self.value.printingItem
	}

		// array of NSData, NSURL, UIImage, ALAsset. does not support page range
    open func printingItems_qk_s(_ printingItems:  [Any]? ) -> QKC<AA,YY,ZZ, [Any]? >{
		return link(next: printingItems).then_QK { $0.value.printingItems = printingItems }
	}
    open func printingItems_qk_g() -> QKC<AA,YY,ZZ, [Any]? >{
		 self +^ self.value.printingItems
	}

		// iPhone
    open func present_qk_f(animated: Bool, completionHandler completion: UIPrintInteractionController.CompletionHandler? = nil) -> QKC<AA,YY,ZZ,Bool >{
		 self +^ self.value.present(animated:animated, completionHandler:completion)
	}

		// iPad
    open func present_qk_f(from rect: CGRect, in view: UIView, animated: Bool, completionHandler completion: UIPrintInteractionController.CompletionHandler? = nil) -> QKC<AA,YY,ZZ,Bool >{
		 self +^ self.value.present(from:rect, in:view, animated:animated, completionHandler:completion)
	}

		// iPad
    open func present_qk_f(from item: UIBarButtonItem, animated: Bool, completionHandler completion: UIPrintInteractionController.CompletionHandler? = nil) -> QKC<AA,YY,ZZ,Bool >{
		 self +^ self.value.present(from:item, animated:animated, completionHandler:completion)
	}

	/**
     * @discussion    Use to print without showing the standard print panel. Use with a
     *        UIPrinter found using the UIPrinterPickerController.
     *              The value for the duplex property on printInfo will be ignored.
     */
    open func print_qk_f(to printer: UIPrinter, completionHandler completion: UIPrintInteractionController.CompletionHandler? = nil) -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.print(to:printer, completionHandler:completion)
	}

    open func dismiss_qk_f(animated: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.dismiss(animated:animated) +^ animated
	}

}

